package com.softeem.files;

import java.io.File;
import java.io.FilenameFilter;

/**
 * 现在可以通过list获取文件夹中的文件名称,可以通过listFiles()方法实现对于文件夹中的对象获取
 * 但是现在对其进行过过滤需要使用String类型对字符串进行分割
 * 使用文件过滤器可以解决对于文件的筛选
 * FilenameFilter:是一个接口
 *  返回抽象路径名这些路径表示文件的地址
 */
public class File_01{
    public static void main(String[] args) {
        File dir = new File("D:\\file\\test");
        //判断当前输入的地址是否是一个路径,因为我们使用的listFiles()只对文件夹进行分析
        if(dir.isDirectory()){
            MyFilter mf = new MyFilter();
            //调用方法,在方法的参数位置添加一个过滤器,用来完成对于文件名称的过滤
            File[] fs = dir.listFiles(mf);
            for(File f : fs){
                System.out.println(f.getName());
            }
        }else{
            System.out.println("当前的地址不是一个目录");
        }
    }

}

/**
 * 过滤器
 * File[] listFiles()
 *      返回一个抽象路径名数组，表示由该抽象路径名表示的目录中的文件。
 * File[] listFiles(FileFilter filter)
 *      返回一个抽象路径名数组，表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
 * File[] listFiles(FilenameFilter filter)
 *      返回一个抽象路径名数组，表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
 */
class MyFilter implements FilenameFilter{
    @Override
    public boolean accept(File dir, String name) {
        if(name != null && name.endsWith(".txt")){
            return true;
        }
        return false;
    }
}
